package com.sq.partner.manager.util;

import java.util.ArrayList;
import java.util.List;

public class ListSplitUtil<T> {
	/**
	 *分割集合
	 *@param list被分割的集合
	 *@param size： 每个集合的长度为size
	 *@param batch：分为batch个小集合
	 */
	public static<T> List<List<T>> splitListBySizeBatch(List<T> list, int size, int batch){
		if(list.size() == 0) {
			return null;
		}
		if(size <= 0) {
			return null;
		}
		if(batch <= 0) {
			return null;
		}
		List<List<T>> listBatch = new ArrayList<List<T>>();
		for(int j = 0; j < batch; j++) {
			int fromIndex = j * size;//首下标
			int toIndex = (j + 1) * size;//尾下标
			if(fromIndex > (list.size()-1)) {//首下标的值大于集合最大下标 则返回break中止
				break;
			}
			if(toIndex > list.size()){//尾下标的值大于集合最大下标  则将最大下标赋值给尾下标
				toIndex = list.size();
			}
			listBatch.add(list.subList(fromIndex, toIndex));
		}
		return listBatch;		
	}	
}
